/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fr.cggveritas.crewintranet.jms.dao.jpacontroller;

import fr.cggveritas.crewintranet.jms.dao.jpacontroller.exceptions.IllegalOrphanException;
import fr.cggveritas.crewintranet.jms.dao.jpacontroller.exceptions.NonexistentEntityException;
import fr.cggveritas.crewintranet.jms.entities.CvAffectationbesoin;
import java.io.Serializable;
import javax.persistence.Query;
import javax.persistence.EntityNotFoundException;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import fr.cggveritas.crewintranet.jms.entities.CvPermisconduire;
import fr.cggveritas.crewintranet.jms.entities.CvPosteoccupe;
import fr.cggveritas.crewintranet.jms.entities.CvTravail;
import fr.cggveritas.crewintranet.jms.entities.CvHistoriquetravalleur;
import java.util.ArrayList;
import java.util.List;
import fr.cggveritas.crewintranet.jms.entities.CvAptitudeprofessionnelle;
import fr.cggveritas.crewintranet.jms.entities.CvVistemedical;
import fr.cggveritas.crewintranet.jms.entities.CvBonnesconduites;
import fr.cggveritas.crewintranet.jms.entities.CvDocofficiels;
import fr.cggveritas.crewintranet.jms.entities.CvNationalitetravailleur;
import fr.cggveritas.crewintranet.jms.entities.CvTelephonetavaleur;
import fr.cggveritas.crewintranet.jms.entities.CvAvertissement;
import fr.cggveritas.crewintranet.jms.entities.CvHistoriqueaffectation;
import fr.cggveritas.crewintranet.jms.entities.CvFormation;
import fr.cggveritas.crewintranet.jms.entities.CvListediplometravailleur;
import fr.cggveritas.crewintranet.jms.entities.CvTravailleur;
import javax.persistence.EntityManager;

/**
 *
 * @author Alassane
 */
public class CvTravailleurJpaController extends DaoImp implements Serializable {

    public CvTravailleurJpaController() {
        super();
    }

    public void create(CvTravailleur cvTravailleur) {
        if (cvTravailleur.getCvHistoriquetravalleurList() == null) {
            cvTravailleur.setCvHistoriquetravalleurList(new ArrayList<CvHistoriquetravalleur>());
        }
        if (cvTravailleur.getCvAptitudeprofessionnelleList() == null) {
            cvTravailleur.setCvAptitudeprofessionnelleList(new ArrayList<CvAptitudeprofessionnelle>());
        }
        if (cvTravailleur.getCvVistemedicalList() == null) {
            cvTravailleur.setCvVistemedicalList(new ArrayList<CvVistemedical>());
        }
        if (cvTravailleur.getCvBonnesconduitesList() == null) {
            cvTravailleur.setCvBonnesconduitesList(new ArrayList<CvBonnesconduites>());
        }
        if (cvTravailleur.getCvDocofficielsList() == null) {
            cvTravailleur.setCvDocofficielsList(new ArrayList<CvDocofficiels>());
        }
        if (cvTravailleur.getCvNationalitetravailleurList() == null) {
            cvTravailleur.setCvNationalitetravailleurList(new ArrayList<CvNationalitetravailleur>());
        }
        if (cvTravailleur.getCvTelephonetavaleurList() == null) {
            cvTravailleur.setCvTelephonetavaleurList(new ArrayList<CvTelephonetavaleur>());
        }
        if (cvTravailleur.getCvAvertissementList() == null) {
            cvTravailleur.setCvAvertissementList(new ArrayList<CvAvertissement>());
        }
        if (cvTravailleur.getCvHistoriqueaffectationList() == null) {
            cvTravailleur.setCvHistoriqueaffectationList(new ArrayList<CvHistoriqueaffectation>());
        }
        if (cvTravailleur.getCvFormationList() == null) {
            cvTravailleur.setCvFormationList(new ArrayList<CvFormation>());
        }
        if (cvTravailleur.getCvListediplometravailleurList() == null) {
            cvTravailleur.setCvListediplometravailleurList(new ArrayList<CvListediplometravailleur>());
        }
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
            CvPermisconduire cvPermisconduire = cvTravailleur.getCvPermisconduire();
            if (cvPermisconduire != null) {
                cvPermisconduire = em.getReference(cvPermisconduire.getClass(), cvPermisconduire.getCvTravailleurId());
                cvTravailleur.setCvPermisconduire(cvPermisconduire);
            }
            CvPosteoccupe cvPosteoccupeIdposteoccupe = cvTravailleur.getCvPosteoccupeIdposteoccupe();
            if (cvPosteoccupeIdposteoccupe != null) {
                cvPosteoccupeIdposteoccupe = em.getReference(cvPosteoccupeIdposteoccupe.getClass(), cvPosteoccupeIdposteoccupe.getIdposteoccupe());
                cvTravailleur.setCvPosteoccupeIdposteoccupe(cvPosteoccupeIdposteoccupe);
            }
            CvTravail cvTravail = cvTravailleur.getCvTravail();
            if (cvTravail != null) {
                cvTravail = em.getReference(cvTravail.getClass(), cvTravail.getCvTravailleurId());
                cvTravailleur.setCvTravail(cvTravail);
            }
            List<CvHistoriquetravalleur> attachedCvHistoriquetravalleurList = new ArrayList<CvHistoriquetravalleur>();
            for (CvHistoriquetravalleur cvHistoriquetravalleurListCvHistoriquetravalleurToAttach : cvTravailleur.getCvHistoriquetravalleurList()) {
                cvHistoriquetravalleurListCvHistoriquetravalleurToAttach = em.getReference(cvHistoriquetravalleurListCvHistoriquetravalleurToAttach.getClass(), cvHistoriquetravalleurListCvHistoriquetravalleurToAttach.getIdhistorique());
                attachedCvHistoriquetravalleurList.add(cvHistoriquetravalleurListCvHistoriquetravalleurToAttach);
            }
            cvTravailleur.setCvHistoriquetravalleurList(attachedCvHistoriquetravalleurList);
            List<CvAptitudeprofessionnelle> attachedCvAptitudeprofessionnelleList = new ArrayList<CvAptitudeprofessionnelle>();
            for (CvAptitudeprofessionnelle cvAptitudeprofessionnelleListCvAptitudeprofessionnelleToAttach : cvTravailleur.getCvAptitudeprofessionnelleList()) {
                cvAptitudeprofessionnelleListCvAptitudeprofessionnelleToAttach = em.getReference(cvAptitudeprofessionnelleListCvAptitudeprofessionnelleToAttach.getClass(), cvAptitudeprofessionnelleListCvAptitudeprofessionnelleToAttach.getIdaptitudeprofessionnelle());
                attachedCvAptitudeprofessionnelleList.add(cvAptitudeprofessionnelleListCvAptitudeprofessionnelleToAttach);
            }
            cvTravailleur.setCvAptitudeprofessionnelleList(attachedCvAptitudeprofessionnelleList);
            List<CvVistemedical> attachedCvVistemedicalList = new ArrayList<CvVistemedical>();
            for (CvVistemedical cvVistemedicalListCvVistemedicalToAttach : cvTravailleur.getCvVistemedicalList()) {
                cvVistemedicalListCvVistemedicalToAttach = em.getReference(cvVistemedicalListCvVistemedicalToAttach.getClass(), cvVistemedicalListCvVistemedicalToAttach.getIdvistemedical());
                attachedCvVistemedicalList.add(cvVistemedicalListCvVistemedicalToAttach);
            }
            cvTravailleur.setCvVistemedicalList(attachedCvVistemedicalList);
            List<CvBonnesconduites> attachedCvBonnesconduitesList = new ArrayList<CvBonnesconduites>();
            for (CvBonnesconduites cvBonnesconduitesListCvBonnesconduitesToAttach : cvTravailleur.getCvBonnesconduitesList()) {
                cvBonnesconduitesListCvBonnesconduitesToAttach = em.getReference(cvBonnesconduitesListCvBonnesconduitesToAttach.getClass(), cvBonnesconduitesListCvBonnesconduitesToAttach.getIdbonnesconduites());
                attachedCvBonnesconduitesList.add(cvBonnesconduitesListCvBonnesconduitesToAttach);
            }
            cvTravailleur.setCvBonnesconduitesList(attachedCvBonnesconduitesList);
            List<CvDocofficiels> attachedCvDocofficielsList = new ArrayList<CvDocofficiels>();
            for (CvDocofficiels cvDocofficielsListCvDocofficielsToAttach : cvTravailleur.getCvDocofficielsList()) {
                cvDocofficielsListCvDocofficielsToAttach = em.getReference(cvDocofficielsListCvDocofficielsToAttach.getClass(), cvDocofficielsListCvDocofficielsToAttach.getId());
                attachedCvDocofficielsList.add(cvDocofficielsListCvDocofficielsToAttach);
            }
            cvTravailleur.setCvDocofficielsList(attachedCvDocofficielsList);
            List<CvNationalitetravailleur> attachedCvNationalitetravailleurList = new ArrayList<CvNationalitetravailleur>();
            for (CvNationalitetravailleur cvNationalitetravailleurListCvNationalitetravailleurToAttach : cvTravailleur.getCvNationalitetravailleurList()) {
                cvNationalitetravailleurListCvNationalitetravailleurToAttach = em.getReference(cvNationalitetravailleurListCvNationalitetravailleurToAttach.getClass(), cvNationalitetravailleurListCvNationalitetravailleurToAttach.getCvNationalitetravailleurPK());
                attachedCvNationalitetravailleurList.add(cvNationalitetravailleurListCvNationalitetravailleurToAttach);
            }
            cvTravailleur.setCvNationalitetravailleurList(attachedCvNationalitetravailleurList);
            List<CvTelephonetavaleur> attachedCvTelephonetavaleurList = new ArrayList<CvTelephonetavaleur>();
            for (CvTelephonetavaleur cvTelephonetavaleurListCvTelephonetavaleurToAttach : cvTravailleur.getCvTelephonetavaleurList()) {
                cvTelephonetavaleurListCvTelephonetavaleurToAttach = em.getReference(cvTelephonetavaleurListCvTelephonetavaleurToAttach.getClass(), cvTelephonetavaleurListCvTelephonetavaleurToAttach.getId());
                attachedCvTelephonetavaleurList.add(cvTelephonetavaleurListCvTelephonetavaleurToAttach);
            }
            cvTravailleur.setCvTelephonetavaleurList(attachedCvTelephonetavaleurList);
            List<CvAvertissement> attachedCvAvertissementList = new ArrayList<CvAvertissement>();
            for (CvAvertissement cvAvertissementListCvAvertissementToAttach : cvTravailleur.getCvAvertissementList()) {
                cvAvertissementListCvAvertissementToAttach = em.getReference(cvAvertissementListCvAvertissementToAttach.getClass(), cvAvertissementListCvAvertissementToAttach.getIdavertissement());
                attachedCvAvertissementList.add(cvAvertissementListCvAvertissementToAttach);
            }
            cvTravailleur.setCvAvertissementList(attachedCvAvertissementList);
            List<CvHistoriqueaffectation> attachedCvHistoriqueaffectationList = new ArrayList<CvHistoriqueaffectation>();
            for (CvHistoriqueaffectation cvHistoriqueaffectationListCvHistoriqueaffectationToAttach : cvTravailleur.getCvHistoriqueaffectationList()) {
                cvHistoriqueaffectationListCvHistoriqueaffectationToAttach = em.getReference(cvHistoriqueaffectationListCvHistoriqueaffectationToAttach.getClass(), cvHistoriqueaffectationListCvHistoriqueaffectationToAttach.getIdhistoriqueaffectation());
                attachedCvHistoriqueaffectationList.add(cvHistoriqueaffectationListCvHistoriqueaffectationToAttach);
            }
            cvTravailleur.setCvHistoriqueaffectationList(attachedCvHistoriqueaffectationList);
            List<CvFormation> attachedCvFormationList = new ArrayList<CvFormation>();
            for (CvFormation cvFormationListCvFormationToAttach : cvTravailleur.getCvFormationList()) {
                cvFormationListCvFormationToAttach = em.getReference(cvFormationListCvFormationToAttach.getClass(), cvFormationListCvFormationToAttach.getIdformation());
                attachedCvFormationList.add(cvFormationListCvFormationToAttach);
            }
            cvTravailleur.setCvFormationList(attachedCvFormationList);
            List<CvListediplometravailleur> attachedCvListediplometravailleurList = new ArrayList<CvListediplometravailleur>();
            for (CvListediplometravailleur cvListediplometravailleurListCvListediplometravailleurToAttach : cvTravailleur.getCvListediplometravailleurList()) {
                cvListediplometravailleurListCvListediplometravailleurToAttach = em.getReference(cvListediplometravailleurListCvListediplometravailleurToAttach.getClass(), cvListediplometravailleurListCvListediplometravailleurToAttach.getCvListediplometravailleurPK());
                attachedCvListediplometravailleurList.add(cvListediplometravailleurListCvListediplometravailleurToAttach);
            }
            cvTravailleur.setCvListediplometravailleurList(attachedCvListediplometravailleurList);
            em.persist(cvTravailleur);
            if (cvPermisconduire != null) {
                CvTravailleur oldCvTravailleurOfCvPermisconduire = cvPermisconduire.getCvTravailleur();
                if (oldCvTravailleurOfCvPermisconduire != null) {
                    oldCvTravailleurOfCvPermisconduire.setCvPermisconduire(null);
                    oldCvTravailleurOfCvPermisconduire = em.merge(oldCvTravailleurOfCvPermisconduire);
                }
                cvPermisconduire.setCvTravailleur(cvTravailleur);
                cvPermisconduire = em.merge(cvPermisconduire);
            }
            if (cvPosteoccupeIdposteoccupe != null) {
                cvPosteoccupeIdposteoccupe.getCvTravailleurList().add(cvTravailleur);
                cvPosteoccupeIdposteoccupe = em.merge(cvPosteoccupeIdposteoccupe);
            }
            if (cvTravail != null) {
                CvTravailleur oldCvTravailleurOfCvTravail = cvTravail.getCvTravailleur();
                if (oldCvTravailleurOfCvTravail != null) {
                    oldCvTravailleurOfCvTravail.setCvTravail(null);
                    oldCvTravailleurOfCvTravail = em.merge(oldCvTravailleurOfCvTravail);
                }
                cvTravail.setCvTravailleur(cvTravailleur);
                cvTravail = em.merge(cvTravail);
            }
            for (CvHistoriquetravalleur cvHistoriquetravalleurListCvHistoriquetravalleur : cvTravailleur.getCvHistoriquetravalleurList()) {
                CvTravailleur oldCvTravailleurIdOfCvHistoriquetravalleurListCvHistoriquetravalleur = cvHistoriquetravalleurListCvHistoriquetravalleur.getCvTravailleurId();
                cvHistoriquetravalleurListCvHistoriquetravalleur.setCvTravailleurId(cvTravailleur);
                cvHistoriquetravalleurListCvHistoriquetravalleur = em.merge(cvHistoriquetravalleurListCvHistoriquetravalleur);
                if (oldCvTravailleurIdOfCvHistoriquetravalleurListCvHistoriquetravalleur != null) {
                    oldCvTravailleurIdOfCvHistoriquetravalleurListCvHistoriquetravalleur.getCvHistoriquetravalleurList().remove(cvHistoriquetravalleurListCvHistoriquetravalleur);
                    oldCvTravailleurIdOfCvHistoriquetravalleurListCvHistoriquetravalleur = em.merge(oldCvTravailleurIdOfCvHistoriquetravalleurListCvHistoriquetravalleur);
                }
            }
            for (CvAptitudeprofessionnelle cvAptitudeprofessionnelleListCvAptitudeprofessionnelle : cvTravailleur.getCvAptitudeprofessionnelleList()) {
                CvTravailleur oldCvTravailleurIdOfCvAptitudeprofessionnelleListCvAptitudeprofessionnelle = cvAptitudeprofessionnelleListCvAptitudeprofessionnelle.getCvTravailleurId();
                cvAptitudeprofessionnelleListCvAptitudeprofessionnelle.setCvTravailleurId(cvTravailleur);
                cvAptitudeprofessionnelleListCvAptitudeprofessionnelle = em.merge(cvAptitudeprofessionnelleListCvAptitudeprofessionnelle);
                if (oldCvTravailleurIdOfCvAptitudeprofessionnelleListCvAptitudeprofessionnelle != null) {
                    oldCvTravailleurIdOfCvAptitudeprofessionnelleListCvAptitudeprofessionnelle.getCvAptitudeprofessionnelleList().remove(cvAptitudeprofessionnelleListCvAptitudeprofessionnelle);
                    oldCvTravailleurIdOfCvAptitudeprofessionnelleListCvAptitudeprofessionnelle = em.merge(oldCvTravailleurIdOfCvAptitudeprofessionnelleListCvAptitudeprofessionnelle);
                }
            }
            for (CvVistemedical cvVistemedicalListCvVistemedical : cvTravailleur.getCvVistemedicalList()) {
                CvTravailleur oldCvTravailleurIdOfCvVistemedicalListCvVistemedical = cvVistemedicalListCvVistemedical.getCvTravailleurId();
                cvVistemedicalListCvVistemedical.setCvTravailleurId(cvTravailleur);
                cvVistemedicalListCvVistemedical = em.merge(cvVistemedicalListCvVistemedical);
                if (oldCvTravailleurIdOfCvVistemedicalListCvVistemedical != null) {
                    oldCvTravailleurIdOfCvVistemedicalListCvVistemedical.getCvVistemedicalList().remove(cvVistemedicalListCvVistemedical);
                    oldCvTravailleurIdOfCvVistemedicalListCvVistemedical = em.merge(oldCvTravailleurIdOfCvVistemedicalListCvVistemedical);
                }
            }
            for (CvBonnesconduites cvBonnesconduitesListCvBonnesconduites : cvTravailleur.getCvBonnesconduitesList()) {
                CvTravailleur oldCvTravailleurIdOfCvBonnesconduitesListCvBonnesconduites = cvBonnesconduitesListCvBonnesconduites.getCvTravailleurId();
                cvBonnesconduitesListCvBonnesconduites.setCvTravailleurId(cvTravailleur);
                cvBonnesconduitesListCvBonnesconduites = em.merge(cvBonnesconduitesListCvBonnesconduites);
                if (oldCvTravailleurIdOfCvBonnesconduitesListCvBonnesconduites != null) {
                    oldCvTravailleurIdOfCvBonnesconduitesListCvBonnesconduites.getCvBonnesconduitesList().remove(cvBonnesconduitesListCvBonnesconduites);
                    oldCvTravailleurIdOfCvBonnesconduitesListCvBonnesconduites = em.merge(oldCvTravailleurIdOfCvBonnesconduitesListCvBonnesconduites);
                }
            }
            for (CvDocofficiels cvDocofficielsListCvDocofficiels : cvTravailleur.getCvDocofficielsList()) {
                CvTravailleur oldCvTravailleurIdOfCvDocofficielsListCvDocofficiels = cvDocofficielsListCvDocofficiels.getCvTravailleurId();
                cvDocofficielsListCvDocofficiels.setCvTravailleurId(cvTravailleur);
                cvDocofficielsListCvDocofficiels = em.merge(cvDocofficielsListCvDocofficiels);
                if (oldCvTravailleurIdOfCvDocofficielsListCvDocofficiels != null) {
                    oldCvTravailleurIdOfCvDocofficielsListCvDocofficiels.getCvDocofficielsList().remove(cvDocofficielsListCvDocofficiels);
                    oldCvTravailleurIdOfCvDocofficielsListCvDocofficiels = em.merge(oldCvTravailleurIdOfCvDocofficielsListCvDocofficiels);
                }
            }
            for (CvNationalitetravailleur cvNationalitetravailleurListCvNationalitetravailleur : cvTravailleur.getCvNationalitetravailleurList()) {
                CvTravailleur oldCvTravailleurOfCvNationalitetravailleurListCvNationalitetravailleur = cvNationalitetravailleurListCvNationalitetravailleur.getCvTravailleur();
                cvNationalitetravailleurListCvNationalitetravailleur.setCvTravailleur(cvTravailleur);
                cvNationalitetravailleurListCvNationalitetravailleur = em.merge(cvNationalitetravailleurListCvNationalitetravailleur);
                if (oldCvTravailleurOfCvNationalitetravailleurListCvNationalitetravailleur != null) {
                    oldCvTravailleurOfCvNationalitetravailleurListCvNationalitetravailleur.getCvNationalitetravailleurList().remove(cvNationalitetravailleurListCvNationalitetravailleur);
                    oldCvTravailleurOfCvNationalitetravailleurListCvNationalitetravailleur = em.merge(oldCvTravailleurOfCvNationalitetravailleurListCvNationalitetravailleur);
                }
            }
            for (CvTelephonetavaleur cvTelephonetavaleurListCvTelephonetavaleur : cvTravailleur.getCvTelephonetavaleurList()) {
                CvTravailleur oldCvTravailleurIdOfCvTelephonetavaleurListCvTelephonetavaleur = cvTelephonetavaleurListCvTelephonetavaleur.getCvTravailleurId();
                cvTelephonetavaleurListCvTelephonetavaleur.setCvTravailleurId(cvTravailleur);
                cvTelephonetavaleurListCvTelephonetavaleur = em.merge(cvTelephonetavaleurListCvTelephonetavaleur);
                if (oldCvTravailleurIdOfCvTelephonetavaleurListCvTelephonetavaleur != null) {
                    oldCvTravailleurIdOfCvTelephonetavaleurListCvTelephonetavaleur.getCvTelephonetavaleurList().remove(cvTelephonetavaleurListCvTelephonetavaleur);
                    oldCvTravailleurIdOfCvTelephonetavaleurListCvTelephonetavaleur = em.merge(oldCvTravailleurIdOfCvTelephonetavaleurListCvTelephonetavaleur);
                }
            }
            for (CvAvertissement cvAvertissementListCvAvertissement : cvTravailleur.getCvAvertissementList()) {
                CvTravailleur oldCvTravailleurIdOfCvAvertissementListCvAvertissement = cvAvertissementListCvAvertissement.getCvTravailleurId();
                cvAvertissementListCvAvertissement.setCvTravailleurId(cvTravailleur);
                cvAvertissementListCvAvertissement = em.merge(cvAvertissementListCvAvertissement);
                if (oldCvTravailleurIdOfCvAvertissementListCvAvertissement != null) {
                    oldCvTravailleurIdOfCvAvertissementListCvAvertissement.getCvAvertissementList().remove(cvAvertissementListCvAvertissement);
                    oldCvTravailleurIdOfCvAvertissementListCvAvertissement = em.merge(oldCvTravailleurIdOfCvAvertissementListCvAvertissement);
                }
            }
            for (CvHistoriqueaffectation cvHistoriqueaffectationListCvHistoriqueaffectation : cvTravailleur.getCvHistoriqueaffectationList()) {
                CvTravailleur oldCvTravailleurIdOfCvHistoriqueaffectationListCvHistoriqueaffectation = cvHistoriqueaffectationListCvHistoriqueaffectation.getCvTravailleurId();
                cvHistoriqueaffectationListCvHistoriqueaffectation.setCvTravailleurId(cvTravailleur);
                cvHistoriqueaffectationListCvHistoriqueaffectation = em.merge(cvHistoriqueaffectationListCvHistoriqueaffectation);
                if (oldCvTravailleurIdOfCvHistoriqueaffectationListCvHistoriqueaffectation != null) {
                    oldCvTravailleurIdOfCvHistoriqueaffectationListCvHistoriqueaffectation.getCvHistoriqueaffectationList().remove(cvHistoriqueaffectationListCvHistoriqueaffectation);
                    oldCvTravailleurIdOfCvHistoriqueaffectationListCvHistoriqueaffectation = em.merge(oldCvTravailleurIdOfCvHistoriqueaffectationListCvHistoriqueaffectation);
                }
            }
            for (CvFormation cvFormationListCvFormation : cvTravailleur.getCvFormationList()) {
                CvTravailleur oldCvTravailleurIdOfCvFormationListCvFormation = cvFormationListCvFormation.getCvTravailleurId();
                cvFormationListCvFormation.setCvTravailleurId(cvTravailleur);
                cvFormationListCvFormation = em.merge(cvFormationListCvFormation);
                if (oldCvTravailleurIdOfCvFormationListCvFormation != null) {
                    oldCvTravailleurIdOfCvFormationListCvFormation.getCvFormationList().remove(cvFormationListCvFormation);
                    oldCvTravailleurIdOfCvFormationListCvFormation = em.merge(oldCvTravailleurIdOfCvFormationListCvFormation);
                }
            }
            for (CvListediplometravailleur cvListediplometravailleurListCvListediplometravailleur : cvTravailleur.getCvListediplometravailleurList()) {
                CvTravailleur oldCvTravailleurOfCvListediplometravailleurListCvListediplometravailleur = cvListediplometravailleurListCvListediplometravailleur.getCvTravailleur();
                cvListediplometravailleurListCvListediplometravailleur.setCvTravailleur(cvTravailleur);
                cvListediplometravailleurListCvListediplometravailleur = em.merge(cvListediplometravailleurListCvListediplometravailleur);
                if (oldCvTravailleurOfCvListediplometravailleurListCvListediplometravailleur != null) {
                    oldCvTravailleurOfCvListediplometravailleurListCvListediplometravailleur.getCvListediplometravailleurList().remove(cvListediplometravailleurListCvListediplometravailleur);
                    oldCvTravailleurOfCvListediplometravailleurListCvListediplometravailleur = em.merge(oldCvTravailleurOfCvListediplometravailleurListCvListediplometravailleur);
                }
            }
            em.getTransaction().commit();
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }

    public void edit(CvTravailleur cvTravailleur) throws IllegalOrphanException, NonexistentEntityException, Exception {
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
            CvTravailleur persistentCvTravailleur = em.find(CvTravailleur.class, cvTravailleur.getId());
            CvPermisconduire cvPermisconduireOld = persistentCvTravailleur.getCvPermisconduire();
            CvPermisconduire cvPermisconduireNew = cvTravailleur.getCvPermisconduire();
            CvPosteoccupe cvPosteoccupeIdposteoccupeOld = persistentCvTravailleur.getCvPosteoccupeIdposteoccupe();
            CvPosteoccupe cvPosteoccupeIdposteoccupeNew = cvTravailleur.getCvPosteoccupeIdposteoccupe();
            CvTravail cvTravailOld = persistentCvTravailleur.getCvTravail();
            CvTravail cvTravailNew = cvTravailleur.getCvTravail();
            List<CvHistoriquetravalleur> cvHistoriquetravalleurListOld = persistentCvTravailleur.getCvHistoriquetravalleurList();
            List<CvHistoriquetravalleur> cvHistoriquetravalleurListNew = cvTravailleur.getCvHistoriquetravalleurList();
            List<CvAptitudeprofessionnelle> cvAptitudeprofessionnelleListOld = persistentCvTravailleur.getCvAptitudeprofessionnelleList();
            List<CvAptitudeprofessionnelle> cvAptitudeprofessionnelleListNew = cvTravailleur.getCvAptitudeprofessionnelleList();
            List<CvVistemedical> cvVistemedicalListOld = persistentCvTravailleur.getCvVistemedicalList();
            List<CvVistemedical> cvVistemedicalListNew = cvTravailleur.getCvVistemedicalList();
            List<CvBonnesconduites> cvBonnesconduitesListOld = persistentCvTravailleur.getCvBonnesconduitesList();
            List<CvBonnesconduites> cvBonnesconduitesListNew = cvTravailleur.getCvBonnesconduitesList();
            List<CvDocofficiels> cvDocofficielsListOld = persistentCvTravailleur.getCvDocofficielsList();
            List<CvDocofficiels> cvDocofficielsListNew = cvTravailleur.getCvDocofficielsList();
            List<CvNationalitetravailleur> cvNationalitetravailleurListOld = persistentCvTravailleur.getCvNationalitetravailleurList();
            List<CvNationalitetravailleur> cvNationalitetravailleurListNew = cvTravailleur.getCvNationalitetravailleurList();
            List<CvTelephonetavaleur> cvTelephonetavaleurListOld = persistentCvTravailleur.getCvTelephonetavaleurList();
            List<CvTelephonetavaleur> cvTelephonetavaleurListNew = cvTravailleur.getCvTelephonetavaleurList();
            List<CvAvertissement> cvAvertissementListOld = persistentCvTravailleur.getCvAvertissementList();
            List<CvAvertissement> cvAvertissementListNew = cvTravailleur.getCvAvertissementList();
            List<CvHistoriqueaffectation> cvHistoriqueaffectationListOld = persistentCvTravailleur.getCvHistoriqueaffectationList();
            List<CvHistoriqueaffectation> cvHistoriqueaffectationListNew = cvTravailleur.getCvHistoriqueaffectationList();
            List<CvFormation> cvFormationListOld = persistentCvTravailleur.getCvFormationList();
            List<CvFormation> cvFormationListNew = cvTravailleur.getCvFormationList();
            List<CvListediplometravailleur> cvListediplometravailleurListOld = persistentCvTravailleur.getCvListediplometravailleurList();
            List<CvListediplometravailleur> cvListediplometravailleurListNew = cvTravailleur.getCvListediplometravailleurList();
            List<String> illegalOrphanMessages = null;
            if (cvPermisconduireOld != null && !cvPermisconduireOld.equals(cvPermisconduireNew)) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("You must retain CvPermisconduire " + cvPermisconduireOld + " since its cvTravailleur field is not nullable.");
            }
            if (cvTravailOld != null && !cvTravailOld.equals(cvTravailNew)) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("You must retain CvTravail " + cvTravailOld + " since its cvTravailleur field is not nullable.");
            }
            for (CvAptitudeprofessionnelle cvAptitudeprofessionnelleListOldCvAptitudeprofessionnelle : cvAptitudeprofessionnelleListOld) {
                if (!cvAptitudeprofessionnelleListNew.contains(cvAptitudeprofessionnelleListOldCvAptitudeprofessionnelle)) {
                    if (illegalOrphanMessages == null) {
                        illegalOrphanMessages = new ArrayList<String>();
                    }
                    illegalOrphanMessages.add("You must retain CvAptitudeprofessionnelle " + cvAptitudeprofessionnelleListOldCvAptitudeprofessionnelle + " since its cvTravailleurId field is not nullable.");
                }
            }
            for (CvVistemedical cvVistemedicalListOldCvVistemedical : cvVistemedicalListOld) {
                if (!cvVistemedicalListNew.contains(cvVistemedicalListOldCvVistemedical)) {
                    if (illegalOrphanMessages == null) {
                        illegalOrphanMessages = new ArrayList<String>();
                    }
                    illegalOrphanMessages.add("You must retain CvVistemedical " + cvVistemedicalListOldCvVistemedical + " since its cvTravailleurId field is not nullable.");
                }
            }
            for (CvBonnesconduites cvBonnesconduitesListOldCvBonnesconduites : cvBonnesconduitesListOld) {
                if (!cvBonnesconduitesListNew.contains(cvBonnesconduitesListOldCvBonnesconduites)) {
                    if (illegalOrphanMessages == null) {
                        illegalOrphanMessages = new ArrayList<String>();
                    }
                    illegalOrphanMessages.add("You must retain CvBonnesconduites " + cvBonnesconduitesListOldCvBonnesconduites + " since its cvTravailleurId field is not nullable.");
                }
            }
            for (CvDocofficiels cvDocofficielsListOldCvDocofficiels : cvDocofficielsListOld) {
                if (!cvDocofficielsListNew.contains(cvDocofficielsListOldCvDocofficiels)) {
                    if (illegalOrphanMessages == null) {
                        illegalOrphanMessages = new ArrayList<String>();
                    }
                    illegalOrphanMessages.add("You must retain CvDocofficiels " + cvDocofficielsListOldCvDocofficiels + " since its cvTravailleurId field is not nullable.");
                }
            }
            for (CvNationalitetravailleur cvNationalitetravailleurListOldCvNationalitetravailleur : cvNationalitetravailleurListOld) {
                if (!cvNationalitetravailleurListNew.contains(cvNationalitetravailleurListOldCvNationalitetravailleur)) {
                    if (illegalOrphanMessages == null) {
                        illegalOrphanMessages = new ArrayList<String>();
                    }
                    illegalOrphanMessages.add("You must retain CvNationalitetravailleur " + cvNationalitetravailleurListOldCvNationalitetravailleur + " since its cvTravailleur field is not nullable.");
                }
            }
            for (CvTelephonetavaleur cvTelephonetavaleurListOldCvTelephonetavaleur : cvTelephonetavaleurListOld) {
                if (!cvTelephonetavaleurListNew.contains(cvTelephonetavaleurListOldCvTelephonetavaleur)) {
                    if (illegalOrphanMessages == null) {
                        illegalOrphanMessages = new ArrayList<String>();
                    }
                    illegalOrphanMessages.add("You must retain CvTelephonetavaleur " + cvTelephonetavaleurListOldCvTelephonetavaleur + " since its cvTravailleurId field is not nullable.");
                }
            }
            for (CvAvertissement cvAvertissementListOldCvAvertissement : cvAvertissementListOld) {
                if (!cvAvertissementListNew.contains(cvAvertissementListOldCvAvertissement)) {
                    if (illegalOrphanMessages == null) {
                        illegalOrphanMessages = new ArrayList<String>();
                    }
                    illegalOrphanMessages.add("You must retain CvAvertissement " + cvAvertissementListOldCvAvertissement + " since its cvTravailleurId field is not nullable.");
                }
            }
            for (CvHistoriqueaffectation cvHistoriqueaffectationListOldCvHistoriqueaffectation : cvHistoriqueaffectationListOld) {
                if (!cvHistoriqueaffectationListNew.contains(cvHistoriqueaffectationListOldCvHistoriqueaffectation)) {
                    if (illegalOrphanMessages == null) {
                        illegalOrphanMessages = new ArrayList<String>();
                    }
                    illegalOrphanMessages.add("You must retain CvHistoriqueaffectation " + cvHistoriqueaffectationListOldCvHistoriqueaffectation + " since its cvTravailleurId field is not nullable.");
                }
            }
            for (CvFormation cvFormationListOldCvFormation : cvFormationListOld) {
                if (!cvFormationListNew.contains(cvFormationListOldCvFormation)) {
                    if (illegalOrphanMessages == null) {
                        illegalOrphanMessages = new ArrayList<String>();
                    }
                    illegalOrphanMessages.add("You must retain CvFormation " + cvFormationListOldCvFormation + " since its cvTravailleurId field is not nullable.");
                }
            }
            for (CvListediplometravailleur cvListediplometravailleurListOldCvListediplometravailleur : cvListediplometravailleurListOld) {
                if (!cvListediplometravailleurListNew.contains(cvListediplometravailleurListOldCvListediplometravailleur)) {
                    if (illegalOrphanMessages == null) {
                        illegalOrphanMessages = new ArrayList<String>();
                    }
                    illegalOrphanMessages.add("You must retain CvListediplometravailleur " + cvListediplometravailleurListOldCvListediplometravailleur + " since its cvTravailleur field is not nullable.");
                }
            }
            if (illegalOrphanMessages != null) {
                throw new IllegalOrphanException(illegalOrphanMessages);
            }
            if (cvPermisconduireNew != null) {
                cvPermisconduireNew = em.getReference(cvPermisconduireNew.getClass(), cvPermisconduireNew.getCvTravailleurId());
                cvTravailleur.setCvPermisconduire(cvPermisconduireNew);
            }
            if (cvPosteoccupeIdposteoccupeNew != null) {
                cvPosteoccupeIdposteoccupeNew = em.getReference(cvPosteoccupeIdposteoccupeNew.getClass(), cvPosteoccupeIdposteoccupeNew.getIdposteoccupe());
                cvTravailleur.setCvPosteoccupeIdposteoccupe(cvPosteoccupeIdposteoccupeNew);
            }
            if (cvTravailNew != null) {
                cvTravailNew = em.getReference(cvTravailNew.getClass(), cvTravailNew.getCvTravailleurId());
                cvTravailleur.setCvTravail(cvTravailNew);
            }
            List<CvHistoriquetravalleur> attachedCvHistoriquetravalleurListNew = new ArrayList<CvHistoriquetravalleur>();
            for (CvHistoriquetravalleur cvHistoriquetravalleurListNewCvHistoriquetravalleurToAttach : cvHistoriquetravalleurListNew) {
                cvHistoriquetravalleurListNewCvHistoriquetravalleurToAttach = em.getReference(cvHistoriquetravalleurListNewCvHistoriquetravalleurToAttach.getClass(), cvHistoriquetravalleurListNewCvHistoriquetravalleurToAttach.getIdhistorique());
                attachedCvHistoriquetravalleurListNew.add(cvHistoriquetravalleurListNewCvHistoriquetravalleurToAttach);
            }
            cvHistoriquetravalleurListNew = attachedCvHistoriquetravalleurListNew;
            cvTravailleur.setCvHistoriquetravalleurList(cvHistoriquetravalleurListNew);
            List<CvAptitudeprofessionnelle> attachedCvAptitudeprofessionnelleListNew = new ArrayList<CvAptitudeprofessionnelle>();
            for (CvAptitudeprofessionnelle cvAptitudeprofessionnelleListNewCvAptitudeprofessionnelleToAttach : cvAptitudeprofessionnelleListNew) {
                cvAptitudeprofessionnelleListNewCvAptitudeprofessionnelleToAttach = em.getReference(cvAptitudeprofessionnelleListNewCvAptitudeprofessionnelleToAttach.getClass(), cvAptitudeprofessionnelleListNewCvAptitudeprofessionnelleToAttach.getIdaptitudeprofessionnelle());
                attachedCvAptitudeprofessionnelleListNew.add(cvAptitudeprofessionnelleListNewCvAptitudeprofessionnelleToAttach);
            }
            cvAptitudeprofessionnelleListNew = attachedCvAptitudeprofessionnelleListNew;
            cvTravailleur.setCvAptitudeprofessionnelleList(cvAptitudeprofessionnelleListNew);
            List<CvVistemedical> attachedCvVistemedicalListNew = new ArrayList<CvVistemedical>();
            for (CvVistemedical cvVistemedicalListNewCvVistemedicalToAttach : cvVistemedicalListNew) {
                cvVistemedicalListNewCvVistemedicalToAttach = em.getReference(cvVistemedicalListNewCvVistemedicalToAttach.getClass(), cvVistemedicalListNewCvVistemedicalToAttach.getIdvistemedical());
                attachedCvVistemedicalListNew.add(cvVistemedicalListNewCvVistemedicalToAttach);
            }
            cvVistemedicalListNew = attachedCvVistemedicalListNew;
            cvTravailleur.setCvVistemedicalList(cvVistemedicalListNew);
            List<CvBonnesconduites> attachedCvBonnesconduitesListNew = new ArrayList<CvBonnesconduites>();
            for (CvBonnesconduites cvBonnesconduitesListNewCvBonnesconduitesToAttach : cvBonnesconduitesListNew) {
                cvBonnesconduitesListNewCvBonnesconduitesToAttach = em.getReference(cvBonnesconduitesListNewCvBonnesconduitesToAttach.getClass(), cvBonnesconduitesListNewCvBonnesconduitesToAttach.getIdbonnesconduites());
                attachedCvBonnesconduitesListNew.add(cvBonnesconduitesListNewCvBonnesconduitesToAttach);
            }
            cvBonnesconduitesListNew = attachedCvBonnesconduitesListNew;
            cvTravailleur.setCvBonnesconduitesList(cvBonnesconduitesListNew);
            List<CvDocofficiels> attachedCvDocofficielsListNew = new ArrayList<CvDocofficiels>();
            for (CvDocofficiels cvDocofficielsListNewCvDocofficielsToAttach : cvDocofficielsListNew) {
                cvDocofficielsListNewCvDocofficielsToAttach = em.getReference(cvDocofficielsListNewCvDocofficielsToAttach.getClass(), cvDocofficielsListNewCvDocofficielsToAttach.getId());
                attachedCvDocofficielsListNew.add(cvDocofficielsListNewCvDocofficielsToAttach);
            }
            cvDocofficielsListNew = attachedCvDocofficielsListNew;
            cvTravailleur.setCvDocofficielsList(cvDocofficielsListNew);
            List<CvNationalitetravailleur> attachedCvNationalitetravailleurListNew = new ArrayList<CvNationalitetravailleur>();
            for (CvNationalitetravailleur cvNationalitetravailleurListNewCvNationalitetravailleurToAttach : cvNationalitetravailleurListNew) {
                cvNationalitetravailleurListNewCvNationalitetravailleurToAttach = em.getReference(cvNationalitetravailleurListNewCvNationalitetravailleurToAttach.getClass(), cvNationalitetravailleurListNewCvNationalitetravailleurToAttach.getCvNationalitetravailleurPK());
                attachedCvNationalitetravailleurListNew.add(cvNationalitetravailleurListNewCvNationalitetravailleurToAttach);
            }
            cvNationalitetravailleurListNew = attachedCvNationalitetravailleurListNew;
            cvTravailleur.setCvNationalitetravailleurList(cvNationalitetravailleurListNew);
            List<CvTelephonetavaleur> attachedCvTelephonetavaleurListNew = new ArrayList<CvTelephonetavaleur>();
            for (CvTelephonetavaleur cvTelephonetavaleurListNewCvTelephonetavaleurToAttach : cvTelephonetavaleurListNew) {
                cvTelephonetavaleurListNewCvTelephonetavaleurToAttach = em.getReference(cvTelephonetavaleurListNewCvTelephonetavaleurToAttach.getClass(), cvTelephonetavaleurListNewCvTelephonetavaleurToAttach.getId());
                attachedCvTelephonetavaleurListNew.add(cvTelephonetavaleurListNewCvTelephonetavaleurToAttach);
            }
            cvTelephonetavaleurListNew = attachedCvTelephonetavaleurListNew;
            cvTravailleur.setCvTelephonetavaleurList(cvTelephonetavaleurListNew);
            List<CvAvertissement> attachedCvAvertissementListNew = new ArrayList<CvAvertissement>();
            for (CvAvertissement cvAvertissementListNewCvAvertissementToAttach : cvAvertissementListNew) {
                cvAvertissementListNewCvAvertissementToAttach = em.getReference(cvAvertissementListNewCvAvertissementToAttach.getClass(), cvAvertissementListNewCvAvertissementToAttach.getIdavertissement());
                attachedCvAvertissementListNew.add(cvAvertissementListNewCvAvertissementToAttach);
            }
            cvAvertissementListNew = attachedCvAvertissementListNew;
            cvTravailleur.setCvAvertissementList(cvAvertissementListNew);
            List<CvHistoriqueaffectation> attachedCvHistoriqueaffectationListNew = new ArrayList<CvHistoriqueaffectation>();
            for (CvHistoriqueaffectation cvHistoriqueaffectationListNewCvHistoriqueaffectationToAttach : cvHistoriqueaffectationListNew) {
                cvHistoriqueaffectationListNewCvHistoriqueaffectationToAttach = em.getReference(cvHistoriqueaffectationListNewCvHistoriqueaffectationToAttach.getClass(), cvHistoriqueaffectationListNewCvHistoriqueaffectationToAttach.getIdhistoriqueaffectation());
                attachedCvHistoriqueaffectationListNew.add(cvHistoriqueaffectationListNewCvHistoriqueaffectationToAttach);
            }
            cvHistoriqueaffectationListNew = attachedCvHistoriqueaffectationListNew;
            cvTravailleur.setCvHistoriqueaffectationList(cvHistoriqueaffectationListNew);
            List<CvFormation> attachedCvFormationListNew = new ArrayList<CvFormation>();
            for (CvFormation cvFormationListNewCvFormationToAttach : cvFormationListNew) {
                cvFormationListNewCvFormationToAttach = em.getReference(cvFormationListNewCvFormationToAttach.getClass(), cvFormationListNewCvFormationToAttach.getIdformation());
                attachedCvFormationListNew.add(cvFormationListNewCvFormationToAttach);
            }
            cvFormationListNew = attachedCvFormationListNew;
            cvTravailleur.setCvFormationList(cvFormationListNew);
            List<CvListediplometravailleur> attachedCvListediplometravailleurListNew = new ArrayList<CvListediplometravailleur>();
            for (CvListediplometravailleur cvListediplometravailleurListNewCvListediplometravailleurToAttach : cvListediplometravailleurListNew) {
                cvListediplometravailleurListNewCvListediplometravailleurToAttach = em.getReference(cvListediplometravailleurListNewCvListediplometravailleurToAttach.getClass(), cvListediplometravailleurListNewCvListediplometravailleurToAttach.getCvListediplometravailleurPK());
                attachedCvListediplometravailleurListNew.add(cvListediplometravailleurListNewCvListediplometravailleurToAttach);
            }
            cvListediplometravailleurListNew = attachedCvListediplometravailleurListNew;
            cvTravailleur.setCvListediplometravailleurList(cvListediplometravailleurListNew);
            cvTravailleur = em.merge(cvTravailleur);
            if (cvPermisconduireNew != null && !cvPermisconduireNew.equals(cvPermisconduireOld)) {
                CvTravailleur oldCvTravailleurOfCvPermisconduire = cvPermisconduireNew.getCvTravailleur();
                if (oldCvTravailleurOfCvPermisconduire != null) {
                    oldCvTravailleurOfCvPermisconduire.setCvPermisconduire(null);
                    oldCvTravailleurOfCvPermisconduire = em.merge(oldCvTravailleurOfCvPermisconduire);
                }
                cvPermisconduireNew.setCvTravailleur(cvTravailleur);
                cvPermisconduireNew = em.merge(cvPermisconduireNew);
            }
            if (cvPosteoccupeIdposteoccupeOld != null && !cvPosteoccupeIdposteoccupeOld.equals(cvPosteoccupeIdposteoccupeNew)) {
                cvPosteoccupeIdposteoccupeOld.getCvTravailleurList().remove(cvTravailleur);
                cvPosteoccupeIdposteoccupeOld = em.merge(cvPosteoccupeIdposteoccupeOld);
            }
            if (cvPosteoccupeIdposteoccupeNew != null && !cvPosteoccupeIdposteoccupeNew.equals(cvPosteoccupeIdposteoccupeOld)) {
                cvPosteoccupeIdposteoccupeNew.getCvTravailleurList().add(cvTravailleur);
                cvPosteoccupeIdposteoccupeNew = em.merge(cvPosteoccupeIdposteoccupeNew);
            }
            if (cvTravailNew != null && !cvTravailNew.equals(cvTravailOld)) {
                CvTravailleur oldCvTravailleurOfCvTravail = cvTravailNew.getCvTravailleur();
                if (oldCvTravailleurOfCvTravail != null) {
                    oldCvTravailleurOfCvTravail.setCvTravail(null);
                    oldCvTravailleurOfCvTravail = em.merge(oldCvTravailleurOfCvTravail);
                }
                cvTravailNew.setCvTravailleur(cvTravailleur);
                cvTravailNew = em.merge(cvTravailNew);
            }
            for (CvHistoriquetravalleur cvHistoriquetravalleurListOldCvHistoriquetravalleur : cvHistoriquetravalleurListOld) {
                if (!cvHistoriquetravalleurListNew.contains(cvHistoriquetravalleurListOldCvHistoriquetravalleur)) {
                    cvHistoriquetravalleurListOldCvHistoriquetravalleur.setCvTravailleurId(null);
                    cvHistoriquetravalleurListOldCvHistoriquetravalleur = em.merge(cvHistoriquetravalleurListOldCvHistoriquetravalleur);
                }
            }
            for (CvHistoriquetravalleur cvHistoriquetravalleurListNewCvHistoriquetravalleur : cvHistoriquetravalleurListNew) {
                if (!cvHistoriquetravalleurListOld.contains(cvHistoriquetravalleurListNewCvHistoriquetravalleur)) {
                    CvTravailleur oldCvTravailleurIdOfCvHistoriquetravalleurListNewCvHistoriquetravalleur = cvHistoriquetravalleurListNewCvHistoriquetravalleur.getCvTravailleurId();
                    cvHistoriquetravalleurListNewCvHistoriquetravalleur.setCvTravailleurId(cvTravailleur);
                    cvHistoriquetravalleurListNewCvHistoriquetravalleur = em.merge(cvHistoriquetravalleurListNewCvHistoriquetravalleur);
                    if (oldCvTravailleurIdOfCvHistoriquetravalleurListNewCvHistoriquetravalleur != null && !oldCvTravailleurIdOfCvHistoriquetravalleurListNewCvHistoriquetravalleur.equals(cvTravailleur)) {
                        oldCvTravailleurIdOfCvHistoriquetravalleurListNewCvHistoriquetravalleur.getCvHistoriquetravalleurList().remove(cvHistoriquetravalleurListNewCvHistoriquetravalleur);
                        oldCvTravailleurIdOfCvHistoriquetravalleurListNewCvHistoriquetravalleur = em.merge(oldCvTravailleurIdOfCvHistoriquetravalleurListNewCvHistoriquetravalleur);
                    }
                }
            }
            for (CvAptitudeprofessionnelle cvAptitudeprofessionnelleListNewCvAptitudeprofessionnelle : cvAptitudeprofessionnelleListNew) {
                if (!cvAptitudeprofessionnelleListOld.contains(cvAptitudeprofessionnelleListNewCvAptitudeprofessionnelle)) {
                    CvTravailleur oldCvTravailleurIdOfCvAptitudeprofessionnelleListNewCvAptitudeprofessionnelle = cvAptitudeprofessionnelleListNewCvAptitudeprofessionnelle.getCvTravailleurId();
                    cvAptitudeprofessionnelleListNewCvAptitudeprofessionnelle.setCvTravailleurId(cvTravailleur);
                    cvAptitudeprofessionnelleListNewCvAptitudeprofessionnelle = em.merge(cvAptitudeprofessionnelleListNewCvAptitudeprofessionnelle);
                    if (oldCvTravailleurIdOfCvAptitudeprofessionnelleListNewCvAptitudeprofessionnelle != null && !oldCvTravailleurIdOfCvAptitudeprofessionnelleListNewCvAptitudeprofessionnelle.equals(cvTravailleur)) {
                        oldCvTravailleurIdOfCvAptitudeprofessionnelleListNewCvAptitudeprofessionnelle.getCvAptitudeprofessionnelleList().remove(cvAptitudeprofessionnelleListNewCvAptitudeprofessionnelle);
                        oldCvTravailleurIdOfCvAptitudeprofessionnelleListNewCvAptitudeprofessionnelle = em.merge(oldCvTravailleurIdOfCvAptitudeprofessionnelleListNewCvAptitudeprofessionnelle);
                    }
                }
            }
            for (CvVistemedical cvVistemedicalListNewCvVistemedical : cvVistemedicalListNew) {
                if (!cvVistemedicalListOld.contains(cvVistemedicalListNewCvVistemedical)) {
                    CvTravailleur oldCvTravailleurIdOfCvVistemedicalListNewCvVistemedical = cvVistemedicalListNewCvVistemedical.getCvTravailleurId();
                    cvVistemedicalListNewCvVistemedical.setCvTravailleurId(cvTravailleur);
                    cvVistemedicalListNewCvVistemedical = em.merge(cvVistemedicalListNewCvVistemedical);
                    if (oldCvTravailleurIdOfCvVistemedicalListNewCvVistemedical != null && !oldCvTravailleurIdOfCvVistemedicalListNewCvVistemedical.equals(cvTravailleur)) {
                        oldCvTravailleurIdOfCvVistemedicalListNewCvVistemedical.getCvVistemedicalList().remove(cvVistemedicalListNewCvVistemedical);
                        oldCvTravailleurIdOfCvVistemedicalListNewCvVistemedical = em.merge(oldCvTravailleurIdOfCvVistemedicalListNewCvVistemedical);
                    }
                }
            }
            for (CvBonnesconduites cvBonnesconduitesListNewCvBonnesconduites : cvBonnesconduitesListNew) {
                if (!cvBonnesconduitesListOld.contains(cvBonnesconduitesListNewCvBonnesconduites)) {
                    CvTravailleur oldCvTravailleurIdOfCvBonnesconduitesListNewCvBonnesconduites = cvBonnesconduitesListNewCvBonnesconduites.getCvTravailleurId();
                    cvBonnesconduitesListNewCvBonnesconduites.setCvTravailleurId(cvTravailleur);
                    cvBonnesconduitesListNewCvBonnesconduites = em.merge(cvBonnesconduitesListNewCvBonnesconduites);
                    if (oldCvTravailleurIdOfCvBonnesconduitesListNewCvBonnesconduites != null && !oldCvTravailleurIdOfCvBonnesconduitesListNewCvBonnesconduites.equals(cvTravailleur)) {
                        oldCvTravailleurIdOfCvBonnesconduitesListNewCvBonnesconduites.getCvBonnesconduitesList().remove(cvBonnesconduitesListNewCvBonnesconduites);
                        oldCvTravailleurIdOfCvBonnesconduitesListNewCvBonnesconduites = em.merge(oldCvTravailleurIdOfCvBonnesconduitesListNewCvBonnesconduites);
                    }
                }
            }
            for (CvDocofficiels cvDocofficielsListNewCvDocofficiels : cvDocofficielsListNew) {
                if (!cvDocofficielsListOld.contains(cvDocofficielsListNewCvDocofficiels)) {
                    CvTravailleur oldCvTravailleurIdOfCvDocofficielsListNewCvDocofficiels = cvDocofficielsListNewCvDocofficiels.getCvTravailleurId();
                    cvDocofficielsListNewCvDocofficiels.setCvTravailleurId(cvTravailleur);
                    cvDocofficielsListNewCvDocofficiels = em.merge(cvDocofficielsListNewCvDocofficiels);
                    if (oldCvTravailleurIdOfCvDocofficielsListNewCvDocofficiels != null && !oldCvTravailleurIdOfCvDocofficielsListNewCvDocofficiels.equals(cvTravailleur)) {
                        oldCvTravailleurIdOfCvDocofficielsListNewCvDocofficiels.getCvDocofficielsList().remove(cvDocofficielsListNewCvDocofficiels);
                        oldCvTravailleurIdOfCvDocofficielsListNewCvDocofficiels = em.merge(oldCvTravailleurIdOfCvDocofficielsListNewCvDocofficiels);
                    }
                }
            }
            for (CvNationalitetravailleur cvNationalitetravailleurListNewCvNationalitetravailleur : cvNationalitetravailleurListNew) {
                if (!cvNationalitetravailleurListOld.contains(cvNationalitetravailleurListNewCvNationalitetravailleur)) {
                    CvTravailleur oldCvTravailleurOfCvNationalitetravailleurListNewCvNationalitetravailleur = cvNationalitetravailleurListNewCvNationalitetravailleur.getCvTravailleur();
                    cvNationalitetravailleurListNewCvNationalitetravailleur.setCvTravailleur(cvTravailleur);
                    cvNationalitetravailleurListNewCvNationalitetravailleur = em.merge(cvNationalitetravailleurListNewCvNationalitetravailleur);
                    if (oldCvTravailleurOfCvNationalitetravailleurListNewCvNationalitetravailleur != null && !oldCvTravailleurOfCvNationalitetravailleurListNewCvNationalitetravailleur.equals(cvTravailleur)) {
                        oldCvTravailleurOfCvNationalitetravailleurListNewCvNationalitetravailleur.getCvNationalitetravailleurList().remove(cvNationalitetravailleurListNewCvNationalitetravailleur);
                        oldCvTravailleurOfCvNationalitetravailleurListNewCvNationalitetravailleur = em.merge(oldCvTravailleurOfCvNationalitetravailleurListNewCvNationalitetravailleur);
                    }
                }
            }
            for (CvTelephonetavaleur cvTelephonetavaleurListNewCvTelephonetavaleur : cvTelephonetavaleurListNew) {
                if (!cvTelephonetavaleurListOld.contains(cvTelephonetavaleurListNewCvTelephonetavaleur)) {
                    CvTravailleur oldCvTravailleurIdOfCvTelephonetavaleurListNewCvTelephonetavaleur = cvTelephonetavaleurListNewCvTelephonetavaleur.getCvTravailleurId();
                    cvTelephonetavaleurListNewCvTelephonetavaleur.setCvTravailleurId(cvTravailleur);
                    cvTelephonetavaleurListNewCvTelephonetavaleur = em.merge(cvTelephonetavaleurListNewCvTelephonetavaleur);
                    if (oldCvTravailleurIdOfCvTelephonetavaleurListNewCvTelephonetavaleur != null && !oldCvTravailleurIdOfCvTelephonetavaleurListNewCvTelephonetavaleur.equals(cvTravailleur)) {
                        oldCvTravailleurIdOfCvTelephonetavaleurListNewCvTelephonetavaleur.getCvTelephonetavaleurList().remove(cvTelephonetavaleurListNewCvTelephonetavaleur);
                        oldCvTravailleurIdOfCvTelephonetavaleurListNewCvTelephonetavaleur = em.merge(oldCvTravailleurIdOfCvTelephonetavaleurListNewCvTelephonetavaleur);
                    }
                }
            }
            for (CvAvertissement cvAvertissementListNewCvAvertissement : cvAvertissementListNew) {
                if (!cvAvertissementListOld.contains(cvAvertissementListNewCvAvertissement)) {
                    CvTravailleur oldCvTravailleurIdOfCvAvertissementListNewCvAvertissement = cvAvertissementListNewCvAvertissement.getCvTravailleurId();
                    cvAvertissementListNewCvAvertissement.setCvTravailleurId(cvTravailleur);
                    cvAvertissementListNewCvAvertissement = em.merge(cvAvertissementListNewCvAvertissement);
                    if (oldCvTravailleurIdOfCvAvertissementListNewCvAvertissement != null && !oldCvTravailleurIdOfCvAvertissementListNewCvAvertissement.equals(cvTravailleur)) {
                        oldCvTravailleurIdOfCvAvertissementListNewCvAvertissement.getCvAvertissementList().remove(cvAvertissementListNewCvAvertissement);
                        oldCvTravailleurIdOfCvAvertissementListNewCvAvertissement = em.merge(oldCvTravailleurIdOfCvAvertissementListNewCvAvertissement);
                    }
                }
            }
            for (CvHistoriqueaffectation cvHistoriqueaffectationListNewCvHistoriqueaffectation : cvHistoriqueaffectationListNew) {
                if (!cvHistoriqueaffectationListOld.contains(cvHistoriqueaffectationListNewCvHistoriqueaffectation)) {
                    CvTravailleur oldCvTravailleurIdOfCvHistoriqueaffectationListNewCvHistoriqueaffectation = cvHistoriqueaffectationListNewCvHistoriqueaffectation.getCvTravailleurId();
                    cvHistoriqueaffectationListNewCvHistoriqueaffectation.setCvTravailleurId(cvTravailleur);
                    cvHistoriqueaffectationListNewCvHistoriqueaffectation = em.merge(cvHistoriqueaffectationListNewCvHistoriqueaffectation);
                    if (oldCvTravailleurIdOfCvHistoriqueaffectationListNewCvHistoriqueaffectation != null && !oldCvTravailleurIdOfCvHistoriqueaffectationListNewCvHistoriqueaffectation.equals(cvTravailleur)) {
                        oldCvTravailleurIdOfCvHistoriqueaffectationListNewCvHistoriqueaffectation.getCvHistoriqueaffectationList().remove(cvHistoriqueaffectationListNewCvHistoriqueaffectation);
                        oldCvTravailleurIdOfCvHistoriqueaffectationListNewCvHistoriqueaffectation = em.merge(oldCvTravailleurIdOfCvHistoriqueaffectationListNewCvHistoriqueaffectation);
                    }
                }
            }
            for (CvFormation cvFormationListNewCvFormation : cvFormationListNew) {
                if (!cvFormationListOld.contains(cvFormationListNewCvFormation)) {
                    CvTravailleur oldCvTravailleurIdOfCvFormationListNewCvFormation = cvFormationListNewCvFormation.getCvTravailleurId();
                    cvFormationListNewCvFormation.setCvTravailleurId(cvTravailleur);
                    cvFormationListNewCvFormation = em.merge(cvFormationListNewCvFormation);
                    if (oldCvTravailleurIdOfCvFormationListNewCvFormation != null && !oldCvTravailleurIdOfCvFormationListNewCvFormation.equals(cvTravailleur)) {
                        oldCvTravailleurIdOfCvFormationListNewCvFormation.getCvFormationList().remove(cvFormationListNewCvFormation);
                        oldCvTravailleurIdOfCvFormationListNewCvFormation = em.merge(oldCvTravailleurIdOfCvFormationListNewCvFormation);
                    }
                }
            }
            for (CvListediplometravailleur cvListediplometravailleurListNewCvListediplometravailleur : cvListediplometravailleurListNew) {
                if (!cvListediplometravailleurListOld.contains(cvListediplometravailleurListNewCvListediplometravailleur)) {
                    CvTravailleur oldCvTravailleurOfCvListediplometravailleurListNewCvListediplometravailleur = cvListediplometravailleurListNewCvListediplometravailleur.getCvTravailleur();
                    cvListediplometravailleurListNewCvListediplometravailleur.setCvTravailleur(cvTravailleur);
                    cvListediplometravailleurListNewCvListediplometravailleur = em.merge(cvListediplometravailleurListNewCvListediplometravailleur);
                    if (oldCvTravailleurOfCvListediplometravailleurListNewCvListediplometravailleur != null && !oldCvTravailleurOfCvListediplometravailleurListNewCvListediplometravailleur.equals(cvTravailleur)) {
                        oldCvTravailleurOfCvListediplometravailleurListNewCvListediplometravailleur.getCvListediplometravailleurList().remove(cvListediplometravailleurListNewCvListediplometravailleur);
                        oldCvTravailleurOfCvListediplometravailleurListNewCvListediplometravailleur = em.merge(oldCvTravailleurOfCvListediplometravailleurListNewCvListediplometravailleur);
                    }
                }
            }
            em.getTransaction().commit();
        } catch (Exception ex) {
            String msg = ex.getLocalizedMessage();
            if (msg == null || msg.length() == 0) {
                Integer id = cvTravailleur.getId();
                if (findCvTravailleur(id) == null) {
                    throw new NonexistentEntityException("The cvTravailleur with id " + id + " no longer exists.");
                }
            }
            throw ex;
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }

    public void destroy(Integer id) throws IllegalOrphanException, NonexistentEntityException {
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
            CvTravailleur cvTravailleur;
            try {
                cvTravailleur = em.getReference(CvTravailleur.class, id);
                cvTravailleur.getId();
            } catch (EntityNotFoundException enfe) {
                throw new NonexistentEntityException("The cvTravailleur with id " + id + " no longer exists.", enfe);
            }
            List<String> illegalOrphanMessages = null;
            CvPermisconduire cvPermisconduireOrphanCheck = cvTravailleur.getCvPermisconduire();
            if (cvPermisconduireOrphanCheck != null) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This CvTravailleur (" + cvTravailleur + ") cannot be destroyed since the CvPermisconduire " + cvPermisconduireOrphanCheck + " in its cvPermisconduire field has a non-nullable cvTravailleur field.");
            }
            CvTravail cvTravailOrphanCheck = cvTravailleur.getCvTravail();
            if (cvTravailOrphanCheck != null) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This CvTravailleur (" + cvTravailleur + ") cannot be destroyed since the CvTravail " + cvTravailOrphanCheck + " in its cvTravail field has a non-nullable cvTravailleur field.");
            }
            List<CvAptitudeprofessionnelle> cvAptitudeprofessionnelleListOrphanCheck = cvTravailleur.getCvAptitudeprofessionnelleList();
            for (CvAptitudeprofessionnelle cvAptitudeprofessionnelleListOrphanCheckCvAptitudeprofessionnelle : cvAptitudeprofessionnelleListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This CvTravailleur (" + cvTravailleur + ") cannot be destroyed since the CvAptitudeprofessionnelle " + cvAptitudeprofessionnelleListOrphanCheckCvAptitudeprofessionnelle + " in its cvAptitudeprofessionnelleList field has a non-nullable cvTravailleurId field.");
            }
            List<CvVistemedical> cvVistemedicalListOrphanCheck = cvTravailleur.getCvVistemedicalList();
            for (CvVistemedical cvVistemedicalListOrphanCheckCvVistemedical : cvVistemedicalListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This CvTravailleur (" + cvTravailleur + ") cannot be destroyed since the CvVistemedical " + cvVistemedicalListOrphanCheckCvVistemedical + " in its cvVistemedicalList field has a non-nullable cvTravailleurId field.");
            }
            List<CvBonnesconduites> cvBonnesconduitesListOrphanCheck = cvTravailleur.getCvBonnesconduitesList();
            for (CvBonnesconduites cvBonnesconduitesListOrphanCheckCvBonnesconduites : cvBonnesconduitesListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This CvTravailleur (" + cvTravailleur + ") cannot be destroyed since the CvBonnesconduites " + cvBonnesconduitesListOrphanCheckCvBonnesconduites + " in its cvBonnesconduitesList field has a non-nullable cvTravailleurId field.");
            }
            List<CvDocofficiels> cvDocofficielsListOrphanCheck = cvTravailleur.getCvDocofficielsList();
            for (CvDocofficiels cvDocofficielsListOrphanCheckCvDocofficiels : cvDocofficielsListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This CvTravailleur (" + cvTravailleur + ") cannot be destroyed since the CvDocofficiels " + cvDocofficielsListOrphanCheckCvDocofficiels + " in its cvDocofficielsList field has a non-nullable cvTravailleurId field.");
            }
            List<CvNationalitetravailleur> cvNationalitetravailleurListOrphanCheck = cvTravailleur.getCvNationalitetravailleurList();
            for (CvNationalitetravailleur cvNationalitetravailleurListOrphanCheckCvNationalitetravailleur : cvNationalitetravailleurListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This CvTravailleur (" + cvTravailleur + ") cannot be destroyed since the CvNationalitetravailleur " + cvNationalitetravailleurListOrphanCheckCvNationalitetravailleur + " in its cvNationalitetravailleurList field has a non-nullable cvTravailleur field.");
            }
            List<CvTelephonetavaleur> cvTelephonetavaleurListOrphanCheck = cvTravailleur.getCvTelephonetavaleurList();
            for (CvTelephonetavaleur cvTelephonetavaleurListOrphanCheckCvTelephonetavaleur : cvTelephonetavaleurListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This CvTravailleur (" + cvTravailleur + ") cannot be destroyed since the CvTelephonetavaleur " + cvTelephonetavaleurListOrphanCheckCvTelephonetavaleur + " in its cvTelephonetavaleurList field has a non-nullable cvTravailleurId field.");
            }
            List<CvAvertissement> cvAvertissementListOrphanCheck = cvTravailleur.getCvAvertissementList();
            for (CvAvertissement cvAvertissementListOrphanCheckCvAvertissement : cvAvertissementListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This CvTravailleur (" + cvTravailleur + ") cannot be destroyed since the CvAvertissement " + cvAvertissementListOrphanCheckCvAvertissement + " in its cvAvertissementList field has a non-nullable cvTravailleurId field.");
            }
            List<CvHistoriqueaffectation> cvHistoriqueaffectationListOrphanCheck = cvTravailleur.getCvHistoriqueaffectationList();
            for (CvHistoriqueaffectation cvHistoriqueaffectationListOrphanCheckCvHistoriqueaffectation : cvHistoriqueaffectationListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This CvTravailleur (" + cvTravailleur + ") cannot be destroyed since the CvHistoriqueaffectation " + cvHistoriqueaffectationListOrphanCheckCvHistoriqueaffectation + " in its cvHistoriqueaffectationList field has a non-nullable cvTravailleurId field.");
            }
            List<CvFormation> cvFormationListOrphanCheck = cvTravailleur.getCvFormationList();
            for (CvFormation cvFormationListOrphanCheckCvFormation : cvFormationListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This CvTravailleur (" + cvTravailleur + ") cannot be destroyed since the CvFormation " + cvFormationListOrphanCheckCvFormation + " in its cvFormationList field has a non-nullable cvTravailleurId field.");
            }
            List<CvListediplometravailleur> cvListediplometravailleurListOrphanCheck = cvTravailleur.getCvListediplometravailleurList();
            for (CvListediplometravailleur cvListediplometravailleurListOrphanCheckCvListediplometravailleur : cvListediplometravailleurListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This CvTravailleur (" + cvTravailleur + ") cannot be destroyed since the CvListediplometravailleur " + cvListediplometravailleurListOrphanCheckCvListediplometravailleur + " in its cvListediplometravailleurList field has a non-nullable cvTravailleur field.");
            }
            if (illegalOrphanMessages != null) {
                throw new IllegalOrphanException(illegalOrphanMessages);
            }
            CvPosteoccupe cvPosteoccupeIdposteoccupe = cvTravailleur.getCvPosteoccupeIdposteoccupe();
            if (cvPosteoccupeIdposteoccupe != null) {
                cvPosteoccupeIdposteoccupe.getCvTravailleurList().remove(cvTravailleur);
                cvPosteoccupeIdposteoccupe = em.merge(cvPosteoccupeIdposteoccupe);
            }
            List<CvHistoriquetravalleur> cvHistoriquetravalleurList = cvTravailleur.getCvHistoriquetravalleurList();
            for (CvHistoriquetravalleur cvHistoriquetravalleurListCvHistoriquetravalleur : cvHistoriquetravalleurList) {
                cvHistoriquetravalleurListCvHistoriquetravalleur.setCvTravailleurId(null);
                cvHistoriquetravalleurListCvHistoriquetravalleur = em.merge(cvHistoriquetravalleurListCvHistoriquetravalleur);
            }
            em.remove(cvTravailleur);
            em.getTransaction().commit();
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }

    public List<CvTravailleur> findCvTravailleurEntities() {
        return findCvTravailleurEntities(true, -1, -1);
    }

    public List<CvTravailleur> findCvTravailleurEntities(int maxResults, int firstResult) {
        return findCvTravailleurEntities(false, maxResults, firstResult);
    }

    private List<CvTravailleur> findCvTravailleurEntities(boolean all, int maxResults, int firstResult) {
        EntityManager em = getEntityManager();
        try {
            CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
            cq.select(cq.from(CvTravailleur.class));
            Query q = em.createQuery(cq);
            if (!all) {
                q.setMaxResults(maxResults);
                q.setFirstResult(firstResult);
            }
            return q.getResultList();
        } finally {
            em.close();
        }
    }

    private List<CvTravailleur> findCvTravailleurEntitiesInverse(boolean all, int maxResults, int firstResult) {
        EntityManager em = getEntityManager();
        try {
            String queryString = "select c from CvTravailleur c order by c.id desc";
            Query q = em.createQuery(queryString);
            if (!all) {
                q.setMaxResults(maxResults);
                q.setFirstResult(firstResult);
            }
            return q.getResultList();
        } finally {
            em.close();
        }
    }

    public CvTravailleur findCvTravailleur(Integer id) {
        EntityManager em = getEntityManager();
        try {
            return em.find(CvTravailleur.class, id);
        } finally {
            em.close();
        }
    }

    public CvTravailleur findCvTravailleurWithDetails(Integer id) {
        EntityManager em = getEntityManager();
        try {
            CvTravailleur cvTravailleur = em.find(CvTravailleur.class, id);
            cvTravailleur.getCvAptitudeprofessionnelleList().size();
            cvTravailleur.getCvAvertissementList().size();
            cvTravailleur.getCvBonnesconduitesList().size();
            cvTravailleur.getCvDocofficielsList().size();
            cvTravailleur.getCvFormationList().size();
            cvTravailleur.getCvHistoriqueaffectationList().size();
            cvTravailleur.getCvHistoriquetravalleurList().size();
            cvTravailleur.getCvNationalitetravailleurList().size();
            cvTravailleur.getCvTelephonetavaleurList().size();
            cvTravailleur.getCvVistemedicalList().size();
            cvTravailleur.getCvListediplometravailleurList().size();

            return cvTravailleur;
        } finally {
            em.close();
        }
    }

    public int getCvTravailleurCount() {
        EntityManager em = getEntityManager();
        try {
            CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
            Root<CvTravailleur> rt = cq.from(CvTravailleur.class);
            cq.select(em.getCriteriaBuilder().count(rt));
            Query q = em.createQuery(cq);
            return ((Long) q.getSingleResult()).intValue();
        } finally {
            em.close();
        }
    }

    public List<CvTravailleur> findCvTravailleurEntitiesByNomPrenom(String nomOuPrenom) {
        EntityManager em = getEntityManager();
        try {
            if (!"".equals(nomOuPrenom)) {
                String queryString = "select c from CvTravailleur c "
                        + "where c.nom like:x or c.prenom like:x";
                Query query = em.createQuery(queryString);

                query.setParameter("x", "%" + nomOuPrenom + "%");

                return query.getResultList();

            } else {
                return new ArrayList<CvTravailleur>();
            }
        } finally {
            em.close();
        }
    }

    public List<CvTravailleur> findCvChauffeurs() {
        EntityManager em = getEntityManager();
        try {
            String queryString = "select c from CvTravailleur c "
                    + "join c.cvPosteoccupeIdposteoccupe op "
                    + "join op.cvListeposteIdposte lp "
                    + "where lp.idposte like:poste";
            Query query = em.createQuery(queryString);
            query.setParameter("poste", "chauffeur%");

            List<CvTravailleur> resul = query.getResultList();
            if (resul != null) {
                return resul;
            }
            return new ArrayList<CvTravailleur>();

        } finally {
            em.close();
        }
    }

    public List<CvTravailleur> findCvChauffeursDisponible() {
        EntityManager em = getEntityManager();
        try {
            List<CvTravailleur> listCvTravailleurs = new ArrayList<CvTravailleur>();
            Query query = em.createNamedQuery("CvTravailleur.findByEtatChauffeur");
            query.setParameter("idposte", "chauffeur%");

            List<CvTravailleur> result = query.getResultList();

            Query query2 = em.createNamedQuery("CvAffectationbesoin.findByStatue");
            Short statu = 0;
            query2.setParameter("statue", statu);
            List<CvAffectationbesoin> resul1 = query2.getResultList();

            if (!resul1.isEmpty()) {
                for (CvAffectationbesoin cva : resul1) {
                    if (result.contains(cva.getIdchauffeur())) {
                        result.remove(cva.getIdchauffeur());
                    }
                }
                return result;
                
            } else {
                if (!result.isEmpty()) {
                    return result;
                }
            }
            return listCvTravailleurs;

        } finally {
            em.close();
        }
    }

    public CvTravailleur getLastCvTravailleur() {
        if(findCvTravailleurEntitiesInverse(true, 1, 1).size()==0){
            return null;
        }
        return findCvTravailleurEntitiesInverse(true, 1, 1).get(0);
    }

    public CvTravailleur findCvTravailleurByIdPersonnel(int parseInt) {
        EntityManager em = getEntityManager();
        try {
            CvTravailleur users = new CvTravailleur();
            Query query = em.createNamedQuery("CvTravailleur.findByIDpersonne");
            List result = query.setParameter("iDpersonne", parseInt).getResultList();
            if(!result.isEmpty()){
                users = (CvTravailleur) result.get(0);
                return users;
            }
            return users;
            
        } finally {
            em.close();
        }
    }
}
